home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1996 June
/
EnigmA AMIGA RUN 08 (1996)(G.R. Edizioni)(IT)[!][issue 1996-06][EARSAN CD VII].iso
/
earcd
/
arexx
/
trxtlsr3.lha
/
Others
/
Hunt.rexx
< prev
Wrap
OS/2 REXX Batch file
|
1996-05-07
|
11KB
|
393 lines
/*
$VER: Hunt.rexx 1.0 (27.4.96) Copyright (c) Nils Görs.
Funktionsbeschreibung:
Sucht mittels GREP, in einer Textdatei einen Text und gibt passende
Einträge in einem ListView-Fenster aus.
Ich verwende das Skript um vor einem Download zu überprüfen, ob ich
das Archiv vielleicht schon einmal gesaugt habe oder um in einer 2MB
Aminet-CD-Datei ein File zu finden ;-)
Autor dieses Skripts:
Nils Görs Tel. : +49 (0)202 784258
Kaiserstr. 97a EMail: N.Goers@Art-Line.de
42329 Wuppertal oder über das ZP-Support-Brett.
Verwenden Sie bitte nach Möglichkeit elektronische Post!
Installation (DOPUS4.12):
=========================
AmigaDOS rx Hunt.rexx {p} {O}
Flags: Do all Files
No filename quote
Run asynchronously
Erstellen Sie bitte eine Datei (PROGDIR:Hunt.base) mit den Pfaden und
Filenamen der Listen, in denen Sie etwas suchen möchten.
*/
Grep = "c:grep"
OutputFile = "t:GrepOut"
OPTIONS RESULTS
PARSE ARG PubScreen SearchFor
IF PubScreen == "?" THEN DO
OPTIONS PROMPT "PUBSCREEN/K,HUNTFOR/K: "
PARSE PULL PubScreen SearchFor
END
SearchFor=DELSTR(Searchfor,1,1)
CALL _InitAll
/*
** Beschreibung der Applikation
*/
appname = 'Hunt'
applongname = 'Hunt - ©1996 by Nils Görs'
appinfo = 'suchen innerhalb einer Datei.'
appversion = '1.0'
apprelease = '1'
appdate = '26.4.96'
_maintags:
windowtags = WindowID(1),
PubScreenName(PubScreen),
WindowBackfillFB,
WindowTitle(appname appversion),
BeginMenu('Project'),
MenuItem('C_ChangePubScreen',10),
MenuItem('Q_Quit',11),
BeginMenu('Actions'),
MenuItem('O_Open searchfile...',12),
MenuItem('S_change seachfile...',13),
'HorizGroupA Space VertGroupA Space',
'BeginLine',
Text3('_Suchen nach:') 'TRAT_ID 2',
StringGadget(SearchFor,2) 'TRAT_Value 1000',
GetEntryButton(3),
'Endline',
'SpaceS',
ListRO('Files',1,0),
'SpaceS',
ClippedTextBox("",3),
ClippedTextBox("Liste:" Suchliste,4),
'Space EndGroup Space EndGroup EndProject'
/*
** Unterbrechungssignale
*/
SIGNAL ON break_c
SIGNAL ON failure
SIGNAL ON halt
SIGNAL ON ioerr
SIGNAL ON syntax
app = TR_CREATEAPP('TRCA_Name' '"'appname'"',
'TRCA_LongName' '"'applongname'"',
'TRCA_Info' '"'appinfo'"',
'TRCA_Version' '"'appversion'"',
'TRCA_Release' '"'apprelease'"',
'TRCA_Date' '"'appdate'"',
'TAG_END')
IF app ~= '00000000'x THEN DO
window = TR_OPENPROJECT(app,windowtags)
WindowProject=C2D(window) /* zum Locken des Fensters bei About */
IF SearchFor == "" THEN CALL TR_SendMessage(Window,2,'TROM_ACTIVATE',0)
ELSE CALL _StartSearch
IF window ~= '00000000'x THEN DO
nummer = 0
DO WHILE nummer = 0
CALL TR_WAIT(app,'')
DO WHILE TR_HANDLEMSG(app,'event')
/******************
*** CLOSEGADGET ***
*******************/
IF event.trm_class = 'TRMS_CLOSEWINDOW' THEN nummer = -1
/*************
*** GAGDET ***
**************/
IF event.trm_class = 'TRMS_ACTION' THEN DO
SELECT
WHEN event.trm_id == 10 THEN CALL _NewPubScreen
WHEN event.trm_id == 11 THEN DO
Quit=TR_EasyRequest(app,"Really Quit?",,
"Yes|No","TREZ_Title Quit TREZ_LockProject" WindowProject)
IF Quit == 1 THEN nummer=1
END
WHEN event.trm_id == 12 THEN DO
bool = ASL_RequestFile(window,NeueListe,,
"ASLFR_PubScreenName" PubScreen,
"ASLFR_TitleText" '"Select new file to search in"')
IF bool ~= 0 THEN DO
Suchliste=neueliste.1
CALL TR_SETATTRIBUTE(window,4,'TRAT_TEXT',"Liste:" Suchliste)
END
CALL TR_SendMessage(Window,2,'TROM_ACTIVATE',0)
END
WHEN event.trm_id == 13 THEN CALL _ChangeSearchList
WHEN event.trm_id == 2 THEN CALL _StartSearch
WHEN event.trm_id == 3 THEN DO
CALL TR_SETATTRIBUTE(window,2,'TROB_String','')
CALL TR_SendMessage(Window,2,'TROM_ACTIVATE',0)
END
OTHERWISE
NOP
END
END
/****************
*** Tastatur ***
****************/
IF event.trm_class = 'TRMS_KEYPRESSED' THEN DO
IF event.trm_data == 13 THEN DO
searchfor = TR_GETATTRIBUTE(window,2,'TROB_String')
SELECT
WHEN searchfor = "" THEN CALL TR_SendMessage(Window,2,'TROM_ACTIVATE',0)
OTHERWISE
CALL _StartSearch
END
END
END
/* */
END
END
CALL TR_CLOSEPROJECT(window)
END
CALL TR_DELETEAPP(app)
END
EXIT(0)
_StartSearch:
IF Searchfor == Searchfor.bak THEN DO
IF NeueListe.0 ~= 1 THEN RETURN
ELSE NeueListe.0 = 0
END
SearchFor2.1 = TRANSLATE(SearchFor,'0a'x," ")
SearchFor2.0 = 1
CALL RXTR_WRITEFILE('t:SearchForF',Searchfor2)
CALL TR_LOCKPROJECT(window)
ADDRESS COMMAND Grep "-i -f t:"SearchForF Suchliste ">"OutputFile
FoundResult = (rc)
CALL TR_UNLOCKPROJECT(window)
IF FoundResult == 1 THEN DO
StatusText = "Nichts gefunden!"
files.0 = 0
END
ELSE DO
CALL RXTR_READFILE(OutPutFile,Files)
StatusText = files.0 "passen auf Suchmuster."
END
ADDRESS COMMAND "delete" OutputFile "QUIET"
ADDRESS COMMAND "delete t:SearchForF QUIET"
CALL TR_SETATTRIBUTE(window,1,'TROB_ListView',Files)
CALL TR_SETATTRIBUTE(window,3,'TRAT_TEXT',StatusText)
Searchfor.bak = Searchfor
RETURN
_InitAll:
NL = '0a'x
TRUE = 1
FALSE = 0
Files.0 = 0
/*
** Open libs
*/
IF ~SHOW('LIBRARIES','tritonrexx.library') THEN
IF ~ADDLIB('tritonrexx.library',10,-30,0) THEN
quit('Cannot open tritonrexx.library!',10)
IF ~SHOW(LIBRARIES,'rexxtricks.library') THEN
IF ~ADDLIB('rexxtricks.library',9,-30,38) THEN
quit('Cannot open rexxtricks.library!',10)
IF ~SHOW('LIBRARIES','rexxsupport.library') THEN
IF ~ADDLIB('rexxsupport.library',9,-30,0) THEN
quit('Cannot open rexxsupport.library!',10)
/*
** Set current dir
*/
PARSE SOURCE . . . script .
progdir = PATHPART(script)
booll = LENGTH(progdir)
booli= LASTPOS(":",progdir)
boolh= LASTPOS("/",progdir)
IF booli <= booll THEN progdir2=progdir||"/"
IF boolh == 0 THEN progdir2=progdir||"/"
CALL PRAGMA('D',progdir)
/* Gibt es einen Parameter für den Bildschirm. Wenn nicht, dann wird
der Screen auf dem defaultPubScreen geöffnet. */
IF PubScreen == "" THEN
PubScreen = RXTR_GETDEFAULTPUBSCREEN()
CALL RXTR_PUBSCREENTOFRONT(PubScreen)
IF RXTR_READFILE(progdir||"/Hunt.base",SearchListBase) == 0 THEN DO
say "Konnte" progdir||"/Hunt.base nicht finden!"
EXIT(5)
END
SuchListe = SearchListBase.1
RETURN
/*******************************************************************
*** Routine, die das GUI auf einem neuen PubScreen öffnen läßt ***
*******************************************************************/
_NewPubScreen:
IF PUBSCREENLIST('ScreenList') == 0 THEN RETURN
delstart=LSEARCH(PubScreen,Screenlist)
IF delstart ~= -1 THEN RXTR_STEMREMOVE(ScreenList,delstart)
ScreenListTags = WindowID(2),
WindowBackfillFB,
WindowPosition('TRWP_MOUSEPOINTER'),
WindowTitle('ChangePubScreen'),
WindowFlags('TRWF_NOCLOSEGADGET|TRWF_NOESCCLOSE'),
PubScreenName(Pubscreen),
'VertGroupA',
'Space',
'HorizGroupA',
'Space',
ListSel('screenlist',301,0),
'Space',
'EndGroup',
'Space',
'HorizSeparator',
'Space',
'HorizGroupA',
'Space',
ButtonRE('Cancel',302),
'Space',
'EndGroup Space EndGroup EndGroup EndProject'
PubScreenProject = TR_OPENPROJECT(app,Screenlisttags)
IF PubScreenProject ~= '00000000'x THEN DO
CALL TR_LOCKPROJECT(window)
DO WHILE ende ~= 1
DO WHILE TR_HANDLEMSG(app,'event2')
IF event2.trm_class = 'TRMS_ACTION' THEN ende = 1 /* Cancel Gadget */
IF event2.trm_class = 'TRMS_NEWVALUE' THEN DO
nummer = TR_GETATTRIBUTE(PubScreenProject,301,'TRAT_Value')+1
PubScreen = ScreenList.nummer
CALL TR_UNLOCKPROJECT(window)
CALL TR_CLOSEPROJECT(PubScreenProject)
CALL TR_CLOSEPROJECT(window)
CALL TR_DELETEAPP(app)
CALL RXTR_PUBSCREENTOFRONT(PubScreen)
fromNewPub=1
CALL _MainTags
END
END
END
ende = 0
CALL TR_UNLOCKPROJECT(window)
CALL TR_CLOSEPROJECT(PubScreenProject)
END
RETURN
/*************************************************
** Listview zum auswählen einer neuen Suchliste **
**************************************************/
_ChangeSearchList:
SearchListTags = WindowID(3),
WindowBackfillFB,
WindowPosition('TRWP_MOUSEPOINTER'),
WindowTitle('ChangeSearchList'),
WindowFlags('TRWF_NOCLOSEGADGET|TRWF_NOESCCLOSE'),
PubScreenName(Pubscreen),
'VertGroupA',
'Space',
'HorizGroupA',
'Space',
ListSel('SearchListBase',401,0),
'Space',
'EndGroup',
'Space',
'HorizSeparator',
'Space',
'HorizGroupA',
'Space',
ButtonRE('Cancel',402),
'Space',
'EndGroup Space EndGroup EndGroup EndProject'
SearchListProject = TR_OPENPROJECT(app,SearchListtags)
IF SearchListProject ~= '00000000'x THEN DO
CALL TR_LOCKPROJECT(window)
DO WHILE ende ~= 1
DO WHILE TR_HANDLEMSG(app,'event3')
IF event3.trm_class = 'TRMS_ACTION' THEN ende = 1 /* Cancel Gadget */
IF event3.trm_class = 'TRMS_NEWVALUE' THEN DO
nummerngirl = TR_GETATTRIBUTE(SearchListProject,401,'TRAT_Value')+1
SuchListe = SearchListBase.nummerngirl
NeueListe.0 = 1
ende = 1
CALL TR_SETATTRIBUTE(window,4,'TRAT_TEXT',"Liste:" Suchliste)
END
END
END
END
ende=0
CALL TR_UNLOCKPROJECT(window)
CALL TR_CLOSEPROJECT(SearchListProject)
CALL TR_SendMessage(Window,2,'TROM_ACTIVATE',0)
RETURN
/*******************************************************************************
** Routine, die bei einer Unterbrechung des Scripts aufgerufen wird
*******************************************************************************/
break_c:
failure:
halt:
ioerr:
syntax:
SAY '+++ Fehler' rc 'in Zeile' sigl '-' ERRORTEXT(rc)
SAY SOURCELINE(sigl)
IF app ~= '00000000'x THEN
CALL TR_DELETEAPP(app)
EXIT(10)
/*EOS*/